{
 "metadata": {
  "name": "Kernel_Density_Estimates"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h1>Kernel Density Estimates</h1>\n",
      "Kernel density estimates (KDEs) can be viewed as an alternate to histograms. Given a data set $\\mathbf{X}=\\\\{x_1,\\ldots,x_N\\\\}$, the KDE can be evaluated for any value of $x$ for which the kernel function, $K$, is defined using the following formula\n",
      "\n",
      "$D_h\\left(x,\\mathbf{X}\\right) = \\sum_{i=1}^n \\frac{1}{h} K\\left(\\frac{x-x_i}{h}\\right)$\n",
      "\n",
      "for $x_i \\in \\mathbf{X}$."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<h2>Household Income Example</h2>\n",
      "This example uses marketing data provided by the **Elements of Statistical Learning** [website](http://www-stat.stanford.edu/~tibs/ElemStatLearn/). For this example, we will only be examining the annual household income data in column 1. The income data is arranged is assigned an integer value between 1 an 9 where each integer corresponds to a dollar value range:<br/>\n",
      "<verbatum>\n",
      "    1. Less than 10,000 <br/>\n",
      "2. 10,000 to 14,999<br/>\n",
      "3. 15,000 to 19,999<br/>\n",
      "4. 20,000 to 24,999<br/>\n",
      "5. 25,000 to 29,999<br/>\n",
      "6. 30,000 to 39,999<br/>\n",
      "7. 40,000 to 49,999<br/>\n",
      "8. 50,000 to 74,999<br/>\n",
      "9. 75,000 or more<br/>\n",
      "</verbatum>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from matplotlib import pyplot as plt\n",
      "\n",
      "p = '../data/marketing.data'\n",
      "f = open(p,'r')\n",
      "lines = f.readlines()\n",
      "incomes = [int(line.split(',')[0]) for line in lines]\n",
      "f.close()\n",
      "\n",
      "fig = plt.figure()\n",
      "ax = fig.add_subplot(111)\n",
      "\n",
      "# the histogram of the data\n",
      "n, bins, patches = ax.hist(incomes, 9, normed=0, facecolor='black', alpha=0.15)\n",
      "\n",
      "#Gaussian kernel function\n",
      "def KGauss(x):\n",
      "    return math.exp(-0.5 * x * x) / math.sqrt(2 * math.pi)\n",
      "\n",
      "#kernel density estimate function\n",
      "def Dh(x, data, bandwidth = 1, kernel = KGauss):\n",
      "    return reduce(lambda _sum,y: _sum + kernel((x-y)/bandwidth), data, 0) / bandwidth\n",
      "\n",
      "xvals = range(1,10)\n",
      "y1 = [Dh(x,incomes,0.5) for x in xvals]\n",
      "y2 = [Dh(x,incomes,1.0) for x in xvals]\n",
      "y3 = [Dh(x,incomes,2.0) for x in xvals]\n",
      "\n",
      "plt.plot(xvals,y1)\n",
      "plt.plot(xvals,y2)\n",
      "plt.plot(xvals,y3)\n",
      "plt.legend(('width=0.5','width=1.0','width=2.5'), loc='lower left')\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 51
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}